Various optical scanning apparatus have been developed to read and decode optical indicia, such bar as code symbols on a target such as a label. While early barcode scanners were designed to read symbols at a relatively close distance, there exists a need to read symbols at greater and greater distances, for example in warehousing environments. Conventional optical scanning systems, such as hand-held barcode laser scanners, typically have a limited working range due to the constraints imposed on the optical assembly. Motorized systems with additional lenses or mirrors have been developed to re-position the laser beam waist relative to the fixed lens assembly, thereby increasing the working range of the scanning apparatus, but such improvements are complicated and add cost.
Decoding images has always proved challenging, in part because decoding systems work best with a sharp representation of the barcode symbol, and a sharp representation is not always possible. Due to optical, environmental or physical factors, the representation may be out of focus, too close to the reader, or too far away from the reader. One solution to this problem is to manually move the symbol to a range within the capability of the reader, either by moving the scanning apparatus or by moving the target. This solution can be cumbersome, frustrating, or may not even be possible.
Other solutions utilize the barcode scanner internal circuitry to analyze incoming signals and attempt to identify and segregate actual barcode characters from noise, or to identify barcode characters when the incoming signal is weak or distorted. Analog circuits using this approach are bulky and consume power, which has a deleterious effect on battery life. Digital circuits using this approach rely on advances in microprocessing speed, but are still slow due to the enormous number of iterations required to properly identify and verify a valid codeword.